如何使用借助python完成 ARCGIS工具箱的调用 您所在的位置:网站首页 shell 上个月 如何使用借助python完成 ARCGIS工具箱的调用

如何使用借助python完成 ARCGIS工具箱的调用

2024-01-21 17:42| 来源: 网络整理| 查看: 265

上个月使用python调用arcgis工具箱完成了火点txt文件转shp文件的小功能, 感觉很不错, 写下这篇博客希望对大家有所帮助。

1.环境介绍:

  系统: win8.1(64位)

  arcgis:desktop10.2

2.ARCGIS 工具箱简单介绍:

 

工具英文名称工具中文名称3D Analyst toolbox  

三维分析工具箱

Data Reviewer toolbox绘图工具箱Conversion toolbox转换工具箱Data Management toolbox数据管理工具箱Data Reviewer toolbox数据检查工具箱Geostatistical Analyst地统计分析Spatial Analyst toolbox空间分析工具箱Spatial Statistics toolbox空间统计工具箱

详细帮助页面可以参考 : http://help.arcgis.com/zh-cn/arcgisdesktop/10.0/help/index.html#/na/00r90000001n000000/

3.使用python代码完成arcgis工具箱的调用

3.1.在介绍这个调用之前,先学习一个简单的python程序

import sys def hello(name): print "hello " + name +"!" if "__main__" == __name__: #get count of parameter nLen = len(sys.argv) #print parametes for i in range(0, nLen): print ("argv %d:%s"%(i, sys.argv[i])) #call method hello hello(sys.argv[1])

这个python程序的功能很简单的, 就是接收一个name, 打印hello name!。 我们需要将这个文本保存到本地,修改名字为hello.py,主要扩展名为.py 。 这个hello.py就是python程序的源码文件了。接着打开命令行(win +r) 输入 d:\Python27\ArcGIS10.2\python.exe e:\test\hello.py zhaojiedi 回车就完成了程序的调用。d:\Python27\ArcGIS10.2\python.exe 是你python程序的所在位置,用于解释后面的python程序文件,e:\test\hello.py是你编写的python文件位置,zhaojiedi 这个就是你要传递给python程序的参数。这里是一个参数的, 如果多个参数, 参数中间空格分隔即可。

下面是我调用的输出结果

argv 0:E:\test\hello.py argv 1:zhaojiedi hello zhaojiedi!

通过以上的简单小程序,就可以完成python程序接收外部参数,完成指定的功能啦。

 3.2.接下来使用c#调用下这个python文件。(当然可以使用其他语言调用了,这里使用c#语言演示下,其他语言同理)

void TestPython(string name) { string pythonExe = @"d:\Python27\ArcGIS10.2\python.exe"; string pythonFile = @"e:\test\hello.py"; string outMessage = ""; //创建一个进程 Process process = new Process(); //设置进程的exe文件 process.StartInfo.FileName =pythonExe; //设置启动参数 process.StartInfo.Arguments = string.Format(" {0} {1}", pythonFile, "zhaojiedi"); //设置窗口风格 process.StartInfo.WindowStyle = ProcessWindowStyle.Normal; process.StartInfo.CreateNoWindow = false; //是否使用shell ,这个是false的时候才可以将下面的重定向参数设置为true process.StartInfo.UseShellExecute = false; //设置重定向 process.StartInfo.RedirectStandardError = true; process.StartInfo.RedirectStandardInput = true; process.StartInfo.RedirectStandardOutput = true; //初始化退出码 exitCode = -1; try { process.Start();   //获取重定向的结果信息。    outMessage = process.StandardOutput.ReadToEnd(); process.WaitForExit(); exitCode = process.ExitCode; } catch (Exception ex) { //todo log }   //在终端打印结果信息。   Console.WriteLine(outMessage); //todo 判断退出码 }

3.3. 有了上面的基础, 接下来就可以我们的正题啦, 了解arcgis工具, 并使用python调用。

 这里提供一个样例 , 就是通过python程序完成txt文本文件的点转矢量shp文件。

 在arcgis中我们可以使用工具箱的Data management Tools | Layer and Table Views | Make XY EventLayer 这个工具 添加txt文本文件,如下图:

data.txt 内容如下(中间制表符分割)

101.2 35.1 0.3 121.2 43.2 0.8 101.5 40.2 0.96 110.5 35.6 0.4

点击OK 我们就可以将txt文件中经纬度转成要素(还不是矢量文件呢)。 点击ToolHelp(上图中的按钮) 获取工具帮助信息,弹出如下帮助信息。

copy 这段代码。

在打开arcgis 工具箱 Convert Tools | ToShapeFile | Feature Class To ShapeFile ,点击ToolHelp 获取工具帮助信息,copy调用样例。

修改copy的代码如下

#made by zhaojiedi1992 #import model import os import os.path import arcpy import sys if "__main__" == __name__: nLen = len(sys.argv) for i in range(0, nLen): print ("argv %d:%s\n"%(i, sys.argv[i])) print "===parm ready============ Start ................"  #get parameter txtFile = sys.argv[1] curDir = os.path.split(txtFile)[0]; filename = os.path.split(txtFile)[1]; arcpy.env.workspace = curDir lonField = "Field1" latField = "Field2" featureLayer = filename.replace(".txt",""); sharpFile = txtFile.replace(".txt",".shp") if os.path.exists(sharpFile): os.remove(sharpFile) print "txtFile" + ":\t" + txtFile print "curDir" + ":\t" + curDir print "filename" + ":\t" + filename print "featureLayer" + ":\t" + featureLayer #step1 Creates an XY layer try: # Make the XY event layer... arcpy.MakeXYEventLayer_management(txtFile, lonField, latField, featureLayer) except: # If an error occurred print the message to the screen print arcpy.GetMessages() #step2 feature to sharpfile arcpy.FeatureClassToShapefile_conversion([featureLayer], curDir) print "===========================end============================================\n"

保存这个python代码为txtToShp.py,打开命令行就可以调用了d:\Python27\ArcGIS10.2\python.exe e:\test\txtToShp.py e:\test\data.txt, 当然可以使用3.2中的方法创建一个进程去调用python.exe解析python程序完成调用。

把结果的data.shp文件加载到arcgis中如下图:

看完我的这个文章是不是感觉,arcgis 工具箱手工点击实现的功能都可以通过python程序调用了呢。

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有